home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagd_f.zip
/
DRIVES.SWG
/
0025_Disk Serial Numbers.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-07-17
|
2KB
|
64 lines
(*
Date: 07-10-93 (02:15)
From: LAWRENCE JOHNSTONE
Subj: DISK'S SERIAL NUMBER.
This will work under DOS 4.0 or later, according to Microsoft's MS-DOS
Programmer's Reference (earlier versions of DOS didn't give disks
serial numbers).
*)
UNIT MediaID;
INTERFACE
TYPE
TMediaID = RECORD
InfoLvl: WORD;
SerialNum: LONGINT;
VolLabel: ARRAY [1..11] OF CHAR;
FileSys: ARRAY [1..8] OF CHAR;
END;
FUNCTION GetMediaID( Drive: WORD; VAR MID: TMediaID ): BOOLEAN;
(* Drive: 0=default, 1=A, 2=B, etc. *)
FUNCTION SetMediaID( Drive: WORD; CONST MID: TMediaID ): BOOLEAN;
IMPLEMENTATION
FUNCTION GetMediaID( Drive: WORD; VAR MID: TMediaID ): BOOLEAN; ASSEMBLER;
ASM
push ds
mov bx, [Drive]
mov ch, $08 (* Device category (must be 08h) *)
mov cl, $66 (* Minor code for Get Media ID function *)
lds dx, [MID] (* DS:DX -> TMediaID structure *)
mov ax, $440D (* Function 44 (IOCTL), subfunction 0D *)
int $21
pop ds
mov ax, 0 (* Assume function failed *)
jc @@Done
inc ax (* Didn't fail -- return TRUE *)
@@Done:
END;
FUNCTION SetMediaID( Drive: WORD; CONST MID: TMediaID ): BOOLEAN; ASSEMBLER;
ASM
push ds
mov bx, [Drive]
mov ch, $08 (* Device category (must be 08h) *)
mov cl, $46 (* Minor code for Set Media ID function *)
lds dx, [MID] (* DS:DX -> TMediaID structure *)
mov ax, $440D (* Function 44 (IOCTL), subfunction 0D *)
int $21
pop ds
mov ax, 0 (* Assume function failed *)
jc @@Done
inc ax (* Didn't fail -- return TRUE *)
@@Done:
END;
END.